package com.yyks.es.dubbo.service;

import com.yeyks.common.param.cnhotel.CnHotelListParam;
import com.yeyks.common.param.cnhotel.HotelCountParam;
import com.yeyks.common.result.cnhotel.CnHotelListResultCount;
import com.yeyks.common.result.cnhotel.ExportCnHotelResult;
import com.yyks.es.dubbo.pojo.param.EsC2bHotelSearchParam;
import com.yyks.es.dubbo.pojo.param.EsHotelSearchParam;
import com.yyks.es.dubbo.pojo.param.export.EsHotelCitySearchParam;
import com.yyks.es.dubbo.pojo.param.export.EsHotelRoomCitySearchParam;
import com.yyks.es.dubbo.pojo.result.hotel.EsHotelInfoDetailVo;
import com.yyks.es.dubbo.pojo.result.hotel.EsHotelInfoVo;

import java.util.List;


/**
 * @author shuai
 * @date 2019/10/08 15:39
 */
public interface MySearchService {

    /**
     * 酒店条件搜索
     *
     * @param hotelSearchParam
     * @return
     */
    List<EsHotelInfoVo> searchHotel(EsHotelSearchParam hotelSearchParam);

    /**
     * c2b酒店搜索(按照距离)
     *
     * @param c2bHotelSearchParam
     * @return
     */
    List<EsHotelInfoVo> c2bSearchHotel(EsC2bHotelSearchParam c2bHotelSearchParam);

    /**
     * c2b酒店搜索(按照距离渐进)
     *
     * @param c2bHotelSearchParam
     * @return
     */
    List<EsHotelInfoVo> c2bSearchStepHotel(EsC2bHotelSearchParam c2bHotelSearchParam);

    /**
     * 根据酒店地址查询酒店信息
     *
     * @param esHotelCitySearchParam
     * @return
     */
    List<EsHotelInfoVo> searchHotelByAddress(EsHotelCitySearchParam esHotelCitySearchParam);

    /**
     * 查询某个城市的所有酒店房态
     *
     * @param esHotelRoomCitySearchParam
     * @return
     */
    List<EsHotelInfoVo> searchHotelByCityName(EsHotelRoomCitySearchParam esHotelRoomCitySearchParam);

    /**
     * @param param
     * @return
     */
    List<ExportCnHotelResult> exportCnHotel(CnHotelListParam param);


    /**
     * 查询CNBooking酒店
     *
     * @param param
     * @return
     */
    CnHotelListResultCount searchCnHotel(CnHotelListParam param);

    /**
     * 查询CNBooking酒店详情
     *
     * @param sourceId
     * @return
     */
    EsHotelInfoDetailVo searchCnHotelDetail(String sourceId);

    /**
     * 通过hotelId查询CNBooking酒店详情
     *
     * @param hotelId
     * @return
     */
    EsHotelInfoDetailVo searchCnHotelByHotelId(String hotelId);

    /**
     * 数据大屏之舒适度个数查询
     *
     * @param param {@link HotelCountParam}
     * @return
     */
    Integer searchHotelCount(HotelCountParam param);


}
